1 module features.java_jdk;
2 public import feature;
3 import commons;
4 import hconfigs;
5 
6 enum JDKVersion = "17.0.12";
7 
8 Feature JavaJDKFeature;
9 
10 static if(isARM)
11 	string arch = "aarch64";
12 else
13 	string arch = "x64";
14 
15 
16 private bool installOpenJDK(ref Terminal t, ref RealTimeConsoleInput input, TargetVersion ver, Download[] downloads)
17 {
18 	string installationOutput = buildNormalizedPath(std.file.getcwd(), "Android", "openjdk_17");
19 	if(!extractToFolder(downloads[0].getOutputPath(ver), installationOutput, t, input))
20 	{
21 		t.writelnError("Could not extract to folder ", installationOutput);
22 		return false;
23 	}
24 
25 	string javaHome = buildNormalizedPath(installationOutput, std.file.dirEntries(installationOutput, std.file.SpanMode.shallow).front.name);// = environment["JAVA_HOME"];
26 	version(OSX)
27 		javaHome = buildNormalizedPath(javaHome, "Contents", "Home");
28 
29 	if(!std.file.exists(javaHome))
30 	{
31 		t.writelnError("Expected JAVA_HOME at automatic installation does not exists:" ~ javaHome);
32 		return false;
33 	}
34 	configs["javaHome"] = javaHome;
35 	updateConfigFile();
36 	return true;
37 }
38 
39 void initialize()
40 {
41 	JavaJDKFeature = Feature("Java JDK",
42 		"Java Development Kit. Required for compiling Java code and running gradle",
43 		ExistenceChecker(["javaHome"], ["JAVA_HOME"]),
44 		Installation([Download(
45 			DownloadURL(
46 				windows:"https://aka.ms/download-jdk/microsoft-jdk-$VERSION-windows-"~arch~".zip",
47 				linux: "https://aka.ms/download-jdk/microsoft-jdk-$VERSION-linux-"~arch~".tar.gz",
48 				osx: "https://aka.ms/download-jdk/microsoft-jdk-$VERSION-macos-"~arch~".tar.gz"
49 			))
50 		], toDelegate(&installOpenJDK)),
51 		(ref Terminal t, string where){environment["JAVA_HOME"] = where;},
52 		VersionRange.parse(JDKVersion)
53 	);
54 
55 }
56 void start(){}